package com.mjfeed.service;

import com.mjfeed.dto.api.MemberJSON;
import com.mjfeed.entity.Member;
import com.mjfeed.util.Pagination;
import com.mjfeed.util.ParamBean;

/**
 * @description 会员
 * @author zhaominglei
 * @date 2014年10月7日
 */
public interface MemberService extends BaseService {
	
	/**
	 * 获取所有管理员分页
	 */
	public Pagination<Member> getPagination(ParamBean paramBean);
	
	/**
	 * 判断会员是否登录
	 * 
	 * @return 会员是否登录
	 */
	public boolean isAuthenticated();

	/**
	 * 获取当前登录会员
	 * 
	 * @return 当前登录会员，若不存在则返回null
	 */
	public Member getCurrent();

	/**
	 * 获取当前登录用户名
	 * 
	 * @return 当前登录用户名，若不存在则返回null
	 */
	public String getCurrentUsername();
	
	/**
	 * 判断用户名是否存在
	 * 
	 * @param username
	 *            用户名(忽略大小写)
	 * @return 用户名是否存在
	 */
	public boolean usernameExists(String username);

	/**
	 * 判断用户名是否禁用(如黑名单或系统用户名)
	 * 
	 * @param username
	 *            用户名(忽略大小写)
	 * @return 用户名是否禁用
	 */
	public boolean usernameDisabled(String username);

	/**
	 * 判断E-mail是否存在
	 * 
	 * @param email
	 *            E-mail(忽略大小写)
	 * @return E-mail是否存在
	 */
	public boolean emailExists(String email);

	/**
	 * 判断E-mail是否唯一
	 * 
	 * @param previousEmail
	 *            修改前E-mail(忽略大小写)
	 * @param currentEmail
	 *            当前E-mail(忽略大小写)
	 * @return E-mail是否唯一
	 */
	public boolean emailUnique(String previousEmail, String currentEmail);
	
	/**
	 * 获取会员
	 * 
	 */
	public Member getMemberByUsername(String username);
	
	/**
	 * detail转json
	 */
	public MemberJSON memberToJSON(Member member);
	
	/**
	 * 获取总的会员数
	 */
	public long getCount();
	
	/**
	 * 获取最新的会员
	 */
	public Member getLastMember();
}
